The present invention relates to a unified Viterbi/Turbo decoder in wireless communication systems, and in particular, to a system for receiving and decoding voice and data streams adaptively.
Error control coding techniques involves the use of a channel encoder in the transmitter and a decoder in the receiver. The channel encoder accepts message bits and adds redundancy according to a prescribed rule, thereby producing encoded data at a higher bit rate. The channel decoder exploits the redundancy to decide which message bits were actually transmitted. The purpose of error control coding is to minimize the effect of channel noise. The error control codes are generally classified into block codes and convolutional codes. Convolutional codes are preferred for wireless voice communication systems in which the retransmission of data and its associated delay is intolerable. Block codes are capable of delivering higher throughput and are preferred for the transmission of data where latency is less of a concern.
The Viterbi algorithm is a sequential trellis search algorithm for performing maximum-likelihood (ML) sequence detection, and it is an optimum decoding algorithm for convolutional codes. A published book written by S. B. Wicker, named “Error Control System for Digital Communication and Storage, Pretice Hall, 1995.” disclosed a Viterbi decoder for use in mobile communication systems.
FIG. 1 shows a flowchart of a decoding algorithm used in a practical Viterbi decoder. The decoding procedures include quantization, branch metric computation, path metric update, survivor path recording, and output decision generation. The received signals are first recovered by sampling, and then converted to digital signals. The boundaries of frames and code symbols in the digital signals are detected for block synchronization. After branch metric computation, the partial path metrics is updated using the new branch metric, and the surviving path at each node is tagged. Finally, the decoded output sequence based on the survivor path information can be generated.
FIG. 2 shows a generic Viterbi decoder 20. The Viterbi decoder 20 includes a branch metric calculating (BMC) unit 202, whose output is presented to an Add Compare Select (ACS) unit 204. A state controller 206 provides inputs to the BMC unit 202, the ACS unit 204 and a path metric memory 208. The path metric memory 208 acts as a double buffer and interchanges information with the ACS unit 204. A borrow output 205 of the ACS unit 204 is presented to a trace-back memory and controller 210, whose output is the received information signal 211.
Turbo codes, also known as parallel concatenated codes, are a class of codes whose performance is very close to the Shannon capacity limit. Turbo encoders are implemented by connecting convolutional encoders either in parallel or series to produce concatenated outputs. Bit sequences passing from one encoder to another are permuted by a pseudo-random interleaver, and thus low-weight code words produced by a single encoder are transformed into high-weight code words. Third generation (3G) mobile wireless standards, such as Code Division Multiple Access (CDMA) 2000 and Universal Mobile Telecommunication Service (UMTS) require Turbo encoding for data streams. UK patent application number GB2352943A and “Turbo codes, principles and application, Kluwer Academic Publishers, 2000.” Written by B. Vucetic and J. Yuan disclosed embodiments of the Turbo decoder with the Maximum a Posteriori probability (MAP) algorithm and Soft Output Viterbi Algorithm (SOVA).
FIG. 3 shows an iterative Turbo decoder based on the MAP algorithm. A received symbol in a Turbo decoder consists of systematic data, representing the actual data being transmitted, and parity data, which represents the coded form of the data being transmitted. A first input r0, being the parity data of the received symbol, is presented to a first MAP decoder 302 and a second MAP decoder 306 via an interleaver 304. A second input r1, being the systematic data of the received symbol, is presented to the first MAP decoder 302. A recursive input 311 from a deinterleaver 310 is also presented to the first MAP decoder 302. The output 303 of the first MAP decoder 302 is then provided to an interleaver 308, whose output is provided to the second MAP decoder 306. The second MAP decoder 306 also receives an input from a third input r2 and generates two outputs. A first output 307a of the second MAP decoder 306 is provided to the deinterleaver 310, whereas the second output 307b is provided to another deinterleaver 312. The output of the deinterleaver 312 is provided to a slicer 314, which applies a threshold to a soft output to convert it to a hard output, being a received information signal 315.
Third Generation (3G) communication systems typically require both convolutional coding, for example, Viterbi coding, and Turbo coding for voice and data signals respectively. It is because the transmission of voice and data provides conflicting requirements for transmission rate versus latency and propagation delay. The current mode of addressing these problems is to provide separate encoding systems: Turbo coding for high data-rate data streams and convolutional coding for voice or low data-rate data streams. The receivers of such systems thus require two independent decoders, resulting in a multiplicity of hardware platforms and increasing cost.